package cn.gp.chatclient.api.user;

import cn.gp.chatclient.api.user.req.AddFriendRequest;
import cn.gp.chatclient.api.user.req.LoginRequest;
import cn.gp.chatclient.api.user.req.RegisterRequest;
import cn.gp.chatclient.api.user.req.UpdateProfileRequest;
import cn.gp.chatclient.model.FriendRequestVo;
import cn.gp.chatclient.model.ResponseVo;
import cn.gp.chatclient.model.UserVo;
import retrofit2.Call;
import retrofit2.http.*;

import java.util.List;

public interface UserApi {
    @POST("/api/user/login")
    Call<ResponseVo<UserVo>> login(@Body LoginRequest request);

    @POST("/api/user/register")
    Call<ResponseVo<UserVo>> register(@Body RegisterRequest request);

    @PUT("/api/user/profile")
    Call<ResponseVo<UserVo>> updateProfile(@Body UpdateProfileRequest request);

    @GET("/api/user/search")
    Call<ResponseVo<List<UserVo>>> searchUsers(@Query("keyword") String keyword);

    @POST("/api/user/friend/request")
    Call<ResponseVo<Void>> sendFriendRequest(@Body AddFriendRequest request);

    @GET("/api/user/friend/requests")
    Call<ResponseVo<List<FriendRequestVo>>> getFriendRequests(@Query("userId") Long userId);

    @PUT("/api/user/friend/request/{requestId}")
    Call<ResponseVo<Void>> handleFriendRequest(@Path("requestId") Long requestId, 
                                             @Query("status") Integer status,
                                             @Query("userId") Long userId);
    @GET("/api/user/current")
    Call<ResponseVo<UserVo>> getCurrentUser(@Query("userId") Long userId);
}